In [26]:
import pickle
import plotly.graph_objects as go
import plotly.io as pio
import pandas as pd
import itertools
from matplotlib import path
import numpy as np
import os
from matplotlib import path
import json

mapbox_access_token="pk.eyJ1IjoibWRraGF0YW1pIiwiYSI6ImNqc2Q3MDBlZzBjdTYzeXRsbmtuN2JmYTAifQ.DmiQnVUdDKAV2G2uZppE3g"

geoData=json.load(open('bezirksgrenzen.geojson'))
regionsPDict={}
for i in range(len(geoData['features'])):
    tmpDf=pd.DataFrame(data=geoData['features'][i]['geometry']['coordinates'][0][0],columns=['lon','lat'])
    region_id=int(geoData['features'][i]['properties']['Gemeinde_schluessel'])
    tmpDf['region_id']=region_id
    tmpDf['region_name']=geoData['features'][i]['properties']['Gemeinde_name']
    if i==0:
        regionsDF=tmpDf
    else:
        regionsDF=pd.concat([regionsDF,tmpDf])
        
    regionsPDict[region_id]=path.Path(geoData['features'][i]['geometry']['coordinates'][0][0])
    
    
dfDict={}
regionsList=np.arange(1,13)
print(regionsList)
connectivityG=np.zeros(shape=(len(regionsList),len(regionsList)))

for df_id in range(1,2):
    file_name='berlin/dict_berlin_2019_06_0'+str(df_id)+'.p'
    if os.path.exists(file_name):
        dfDict[df_id]={}
        dfL=pickle.load(open(file_name,'rb'))        
        df=dfL[0]
        PL=dfL[1]        
        PL_distance=dfL[2]
        for r1ID in regionsList:
            dfDict[df_id][r1ID]={}
            for r2ID in regionsList:
                if r2ID>=r1ID:
                    s1=set(PL[regionsPDict[r1ID].contains_points(PL[['lon','lat']])].PathID)
                    s2=set(PL[regionsPDict[r2ID].contains_points(PL[['lon','lat']])].PathID)
                    s=s1&s2
                    connectivityG[r1ID-1,r2ID-1]+=len(s)
                    dfDict[df_id][r1ID][r2ID]=df[df['PathID'].isin(s)]
    else:
        print(file_name," doesn't exist")
print(connectivityG)
pickle.dump(dfDict,open('berlin/dfDict.p','wb'))
np.save('berlin/connectivityG', connectivityG)
[ 1  2  3  4  5  6  7  8  9 10 11 12]
[[7761.  614.    0.  766.  383.  268.  461.  319.  284.  247.  330.  528.]
 [   0. 4872.    0.  264.  124.  142.  393.  351.  307.  225.  370.  137.]
 [   0.    0.    0.    0.    0.    0.    0.    0.    0.    0.    0.    0.]
 [   0.    0.    0. 7608.  700.  522.  576.  273.  189.   86.  133.  368.]
 [   0.    0.    0.    0. 4153.  182.  199.  122.  106.   74.   73.  278.]
 [   0.    0.    0.    0.    0. 4547.  578.  185.  131.   56.   70.  159.]
 [   0.    0.    0.    0.    0.    0. 5983.  574.  233.   80.  114.  192.]
 [   0.    0.    0.    0.    0.    0.    0. 4656.  415.  114.  133.  138.]
 [   0.    0.    0.    0.    0.    0.    0.    0. 5527.  400.  456.  110.]
 [   0.    0.    0.    0.    0.    0.    0.    0.    0. 4704.  668.   86.]
 [   0.    0.    0.    0.    0.    0.    0.    0.    0.    0. 5396.  104.]
 [   0.    0.    0.    0.    0.    0.    0.    0.    0.    0.    0. 4366.]]
In [2]:
import pickle
import plotly.graph_objects as go
import plotly.io as pio
import pandas as pd
import itertools
from matplotlib import path
import numpy as np
import os
from matplotlib import path
import json
mapbox_access_token="pk.eyJ1IjoibWRraGF0YW1pIiwiYSI6ImNqc2Q3MDBlZzBjdTYzeXRsbmtuN2JmYTAifQ.DmiQnVUdDKAV2G2uZppE3g"
geoData=json.load(open('bezirksgrenzen.geojson'))
regionsPDict={}
r1ID=1
r2ID=10
df_id=1
for i in range(len(geoData['features'])):
    tmpDf=pd.DataFrame(data=geoData['features'][i]['geometry']['coordinates'][0][0],columns=['lon','lat'])
    region_id=int(geoData['features'][i]['properties']['Gemeinde_schluessel'])
    tmpDf['region_id']=region_id
    tmpDf['region_name']=geoData['features'][i]['properties']['Gemeinde_name']
    if i==0:
        regionsDF=tmpDf
    else:
        regionsDF=pd.concat([regionsDF,tmpDf])
        
    regionsPDict[region_id]=path.Path(geoData['features'][i]['geometry']['coordinates'][0][0])
dfDict=pickle.load(open('berlin/dfDict.p','rb'))

mydf=dfDict[df_id][r1ID][r2ID].copy()

print(len(df['PathID'].unique().tolist()))
247
In [3]:
df=mydf.copy()
lon=df['lon'].mean()
lat=df['lat'].mean()
regions=regionsDF[regionsDF['region_id'].isin([r1ID,r2ID])]
jelbiArr=[[52.499258, 13.407773],
[52.554145, 13.416526],
[52.544389, 13.295859],
[52.529869, 13.449394],
[52.453640, 13.385650]]
jelbi=pd.DataFrame(jelbiArr,columns=['lat','lon'])
fig = go.Figure([
            go.Scattermapbox(
                lat=df['lat'],
                lon=df['lon'],
                text=df['ltime'],
                mode='markers',     
                marker=go.scattermapbox.Marker(size=2,color=df['PathID'],colorbar={'thickness': 10}),
                name='df'),
            go.Scattermapbox(
                lat=regions['lat'],
                lon=regions['lon'],
                text=regions['region_id'],
                mode='markers',     
                marker=go.scattermapbox.Marker(size=3,colorbar={'thickness': 10}),
                name='df2'),
            go.Scattermapbox(
                lat=jelbi['lat'],
                lon=jelbi['lon'],
                mode='markers',     
                marker=go.scattermapbox.Marker(size=20),
                name='df2')])

fig.update_layout(
    hovermode='closest',
    showlegend=False,
    dragmode='zoom',
    height=1500,
    mapbox=go.layout.Mapbox(
        accesstoken=mapbox_access_token,
        bearing=0,
        center=go.layout.mapbox.Center(
            lat=lat,
            lon=lon
        ),
        pitch=0,
        zoom=10
    )
)

fig.show()